﻿using Business.Entity.Estoque.Produto;
using Business.Entity.Vendas.Pedido.Restaurante;
using Business.Entity.Vendas.Pedido.Restaurante.ClassesRelacionadas;
using Vendas.Controls;
using Vendas.Forms;

namespace Vendas
{
    public delegate void PedidoConfirmadoEventHandler(object sender, PedidoEventArgs e);

    public delegate void PedidoCanceladoEventHandler(object sender, PedidoEventArgs e);

    public delegate void PedidoFechadoEventHandler(object sender, PedidoEventArgs e);

    public delegate void PedidoAbertoEventHandler(object sender, PedidoEventArgs e);

    public delegate void LocalPedidoAlterado(object sender, LocalPedidoAlteradoEventArgs e);

    public delegate void ProdutoAdicionadoEventHandler(object sender, PedidoEventArgs e);

    public delegate void ProdutoExcluidoEventHandler(object sender, PedidoEventArgs e);

    public interface IPedidoRestauranteItem
    {
        event PedidoConfirmadoEventHandler OnPedidoConfirmado;
        event PedidoCanceladoEventHandler OnPedidoCancelado;
        event PedidoFechadoEventHandler OnPedidoFechado;
        event PedidoAbertoEventHandler OnPedidoAberto;
        event LocalPedidoAlterado OnLocalPedidoAlterado;
        event ProdutoAdicionadoEventHandler OnProdutoAdicionado;
        event ProdutoExcluidoEventHandler OnProdutoExcluido;

        MesaTileControl TileControl { get; set; }

        PedidoRestaurante Pedido { get; set; }

        PedidoControl TelaPedidoControl { get; set; }

        //LocalPedidoRestaurante Local { get; set; }
        void AddProduto(Produto produto);
        void AddProduto(ComposicaoProduto produto);

        void ConfirmarPedido();
        void CancelarPedido();
        void FecharPedido();
        void ParcialMesa();

        void AlterarCliente();
        void EditarComposicao();

        void PesquisarDescricao();
        void PesquisarReferencia();
        void PesquisarCodBarra();
    }
}
